﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using com.clinica.business.BE.gesliq;
using com.clinica.business.BL.interfaces.gesliq;
using com.clinica.config;

namespace LiclGesLiq
{
    public class LiclGestionLiquidacionController
    {
        BeginConfig config = new BeginConfig();

        public LiclGestionLiquidacionController()
        { 
        }

        public List<OrdenAtencionBE> Obtener_OrdenesAtencio_Paciente(OrdenAtencionBE oRequest)
        {
            ChannelFactory<IOrdenAtencionBL> factory = null;
            using (factory = new ChannelFactory<IOrdenAtencionBL>(config.Context + "Ordenes"))
            {
                IOrdenAtencionBL oParm = factory.CreateChannel();
                List<OrdenAtencionBE> lst = oParm.ObternerOrdenesAtencion(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<OrdenAtencionBE> Recalcular_OrdenesAtencio_Paciente(OrdenAtencionBE oRequest, int intNum, int intTipLiq)
        {
            ChannelFactory<IOrdenAtencionBL> factory = null;
            using (factory = new ChannelFactory<IOrdenAtencionBL>(config.Context + "Ordenes"))
            {
                IOrdenAtencionBL oParm = factory.CreateChannel();
                List<OrdenAtencionBE> lst = oParm.RecalcularOrdenesAtencion(oRequest, intNum, intTipLiq);
                factory.Close();
                return lst;
            }
        }
        public List<PacienteBE> Buscar_Paciente(PacienteBE oRequest)
        {
            ChannelFactory<IPacienteBL> factory = null;
            using (factory = new ChannelFactory<IPacienteBL>(config.Context + "Paciente"))
            {
                IPacienteBL oPacie = factory.CreateChannel();
                List<PacienteBE> lst = oPacie.BuscarPaciente(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<PacienteBE> Buscar_Paciente_Detalle(PacienteBE oRequest)
        {
            ChannelFactory<IPacienteBL> factory = null;
            using (factory = new ChannelFactory<IPacienteBL>(config.Context + "Paciente"))
            {
                IPacienteBL oPacie = factory.CreateChannel();
                List<PacienteBE> lst = oPacie.BuscarPacienteDetalle(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<PacienteBE> Buscar_Paciente_PorCodigo(PacienteBE oRequest)
        {
            ChannelFactory<IPacienteBL> factory = null;
            using (factory = new ChannelFactory<IPacienteBL>(config.Context + "Paciente"))
            {
                IPacienteBL oPacie = factory.CreateChannel();
                List<PacienteBE> lst = oPacie.BuscarPacientePorCodigo(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<ParametrosBE> Obtener_Tabla(ParametrosBE oRequest)
        {
            ChannelFactory<IParametrosBL> factory = null;
            using (factory = new ChannelFactory<IParametrosBL>(config.Context + "Parametro"))
            {
                IParametrosBL oParm = factory.CreateChannel();
                List<ParametrosBE> lst = oParm.ObtenerParametros(oRequest);
                factory.Close();
                return lst;
            }
        }

        public LiquidacionBE Mantenimiento_Liquidaciones(LiquidacionBE oRequest)
        {
            ChannelFactory<ILiquidacionBL> factory = null;
            using (factory = new ChannelFactory<ILiquidacionBL>(config.Context + "Liquidacion"))
            {
                LiquidacionBE result = new LiquidacionBE();
                ILiquidacionBL oPacie = factory.CreateChannel();
                result = oPacie.ActualizarLiquidaciones(oRequest);
                factory.Close();
                return result;
            }
        }
        public List<OrdenAtencionBE> Obtener_Liquidacion(LiquidacionBE oRequest)
        {
            ChannelFactory<ILiquidacionBL> factory = null;
            using (factory = new ChannelFactory<ILiquidacionBL>(config.Context + "Liquidacion"))
            {
                ILiquidacionBL oPacie = factory.CreateChannel();
                List<OrdenAtencionBE> lst = oPacie.ObtenerLiquidacion(oRequest);
                factory.Close();
                return lst;
            }
        }
        public void AprobarLiquidaciones(LiquidacionBE oRequest)
        {
            ChannelFactory<ILiquidacionBL> factory = null;
            using (factory = new ChannelFactory<ILiquidacionBL>(config.Context + "Liquidacion"))
            {
                ILiquidacionBL oPacie = factory.CreateChannel();
                oPacie.AprobarLiquidacion(oRequest);
                factory.Close();
            }
        }
        public void RechazarLiquidaciones(LiquidacionBE oRequest)
        {
            ChannelFactory<ILiquidacionBL> factory = null;
            using (factory = new ChannelFactory<ILiquidacionBL>(config.Context + "Liquidacion"))
            {
                ILiquidacionBL oPacie = factory.CreateChannel();
                oPacie.RechazarLiquidacion(oRequest);
                factory.Close();
            }
        }
    }
}
